package com.example.leetcode.prcatice;

/**
 * 环形公交路线上有 n 个站，按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离，distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。
 *
 * 环线上的公交车都可以按顺时针和逆时针的方向行驶。
 *
 * 返回乘客从出发点 start 到目的地 destination 之间的最短距离。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/distance-between-bus-stops
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test1184 {

    public int distanceBetweenBusStops(int[] distance, int start, int destination) {
        // 公交车站是一个环
        // 正向加逆向其实就是distance的总和
        int temp = 0;
        int sumDistance = 0 ;
        // 需要考虑  start > destination 情况
        if (start > destination){
            int t = start;
            start = destination;
            destination = t;
        }
        for (int i = 0;i<distance.length;i++){
            sumDistance += distance[i];
            if (i >= start && i<destination){
                temp += distance[i];
            }
        }
        return Math.min(temp, sumDistance - temp);
    }


    public static void main(String[] args) {
        Test1184 t = new Test1184();
        int[] distance = {7,10,1,12,11,14,5,0 };
        int start = 7;
        int destination = 2;
        System.out.println(t.distanceBetweenBusStops(distance, start, destination));
    }
}
